package com.his.service;

import com.github.pagehelper.PageInfo;
import com.his.common.PageParam;
import com.his.common.Rsp;
import com.his.common.Temp;
import com.his.entity.ApplicantInfo;
import com.his.entity.Application;
import com.his.entity.HisUser;

import java.util.List;

/**
 * (Application)表服务接口
 *
 * @author makejava
 * @since 2020-10-23 18:04:35
 */
public interface ApplicationService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    Application queryById(Integer id);

    /**
     * 查询所有通过实体类属性
     *
     * @param application 实例对象
     * @return 查询的结果
     */
    List<Application> queryAll(Application application);

    /**
     * 新增数据
     *
     * @param application 实例对象
     * @return 实例对象
     */
    Application insert(Application application);

    /**
     * 修改数据
     *
     * @param application 实例对象
     * @return 实例对象
     */
    Application update(Application application);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);


    /**
     * 查询所有，带分页功能
     *
     * @param pageParam
     * @return
     */
    Rsp queryAllApply(PageParam<Application> pageParam, HisUser user);

    /**
     * 插入操作
     *
     * @param application
     * @return
     */
    Rsp insertOne(String token ,Application application) throws Exception;

    Rsp updateOne(Application application);

    Application selectOneByPatientId(String patientId);


    /**
     * 后端人员添加住院申请的方法
     * @param temp 临时对象,其中有病人信息,病历信息,申请信息
     * @return 返回状态
     */
    Rsp insertByTemp(Temp temp);


    /**
     * 根据病人住院编号查询病人的姓名和住院记录
     * @param no 住院编号
     * @return 查询到的数据
     */
    Rsp getByNo(String no);

    /**
     * 病历表病人表申请表查询返回vo类
     *
     * @param
     * @return
     */
    PageInfo<ApplicantInfo> getAllApplicantInfo(PageParam<ApplicantInfo> pageParam,HisUser user);

    PageInfo<ApplicantInfo> getAllApplicantInfoByAdvice(PageParam<ApplicantInfo> pageParam,HisUser user);


    List<Application> getByPatientId(int id);
}
